/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package util;

import dao.ChiTietDauGiaDAO;
import dao.DauGiaThanhCongDAO;
import dao.SanPhamDAO;
import dao.ThongTinTaiKhoanDAO;
import java.util.Date;
import java.util.List;
import pojo.Chitietdaugia;
import pojo.Sanpham;
import pojo.Taikhoan;


/**
 *
 * @author WMThiet
 */
public class BidTask implements Runnable {

    @Override
    public void run() {
        try{
            List<Sanpham> listSanPham = SanPhamDAO.LaySanPhamHetDauGia();
            if(listSanPham != null && listSanPham.isEmpty() == false){

                for (Sanpham sanpham : listSanPham) {
                    Chitietdaugia dauGiaChienThang = ChiTietDauGiaDAO.LayDauGiaChienThang(sanpham.getMaSanPham(), sanpham.getGiaHienTai());

                    if(dauGiaChienThang != null){
                       boolean bDone = DauGiaThanhCongDAO.ThemDauGiaThanhCong(dauGiaChienThang);

                       if(bDone){
                           //Send mail:
                           String mail = ThongTinTaiKhoanDAO.LayEmailNguoiDung(dauGiaChienThang.getTaikhoan().getTenTaiKhoan());
                           
                           if(GoiNguoiChienThang(mail,dauGiaChienThang)){                               
                               MyLog.WriteLog(this, String.format("Đã gởi mail đến %s thông báo chiến thắng sản phẩm %s",mail,sanpham.getTenSanPham()));
                           }else{
                               MyLog.WriteLog(this, String.format("Gởi mail đến %s thông báo chiến thắng sản phẩm %s thất bại",mail,sanpham.getTenSanPham()));
                           }
                       }                   
                    }else{
                        MyLog.WriteLog(this, "Không có người chiến thắng đấu giá cho sản phẩm " + sanpham.getMaSanPham() + "-" + sanpham.getTenSanPham());
                    }
                }
            }else{
                System.out.println(new Date().toString() + " - Khong co san pham nao het han dau gia !");
            }
        }
        catch(Exception e){
            MyLog.WriteLog(e, "Lỗi từ hàm lấy danh sách người chơi chiến thắng !");
        }      
        
    }  
    
    public boolean  GoiNguoiChienThang(String to,Chitietdaugia ct){
        boolean bDone = false;
        
        try{
            Sanpham sanpham = ct.getSanpham();
            Taikhoan taikhoan = ct.getTaikhoan();
            
            String subject = "P2TBid - Thông báo chiến thắng";
            StringBuilder body = new StringBuilder();
            body.append(String.format("<h2>THÔNG BÁO CHIẾN THẮNG ĐẤU GIÁ cho sản phẩm %s</h2>",sanpham.getTenSanPham()));
            body.append(String.format("<p>Chào %s !</p>",taikhoan.getTenTaiKhoan()));
            body.append(String.format("<p>Chúc mừng bạn đã giành chiến thắng trong phiên đấu giá sản phẩm <b>%s </b> với giá đấu <b>%s</b>.</p>", sanpham.getTenSanPham(),util.UtilCommon.customFormat("#,###", sanpham.getGiaHienTai())));
            body.append("<p>Hãy ghé thăm <a href='http://localhost:8080/DauGia/'>P2T Bid</a> để hoàn thành việc mua sản phẩm này !</p>");
            body.append("<p>Thân chào !</p>");
            
            MailUtil mail = new MailUtil(to,subject,body.toString());
            bDone = mail.send();
            
        }catch(Exception ex){
            bDone = false;
        }
               
        return bDone;
    }    
}
